import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("开放的地图")

# 设置窗口的初始大小
root.geometry("400x500")

# 创建第一个标签，用于显示 iframe 模式嵌入多个地图的标题
# iframe_label = tk.Label(root, text="iframe 模式嵌入多个地图")
# iframe_label.pack()

# # 模拟 iframe 模式嵌入多个地图，使用 Frame 来代替 iframe
# iframe_frame1 = tk.Frame(root, width=200, height=200, bg="red")
# iframe_frame1.pack(side=tk.LEFT)

# iframe_frame2 = tk.Frame(root, width=200, height=200, bg="green")
# iframe_frame2.pack(side=tk.LEFT)

# iframe_frame3 = tk.Frame(root, width=400, height=100, bg="blue")
# iframe_frame3.pack()

# 创建第二个标签，用于显示动态生成地图的标题
dynamic_label = tk.Label(root, text="动态生成地图")
dynamic_label.pack()

# 模拟动态生成地图的数据
maps = [
    ['map_1', 0, 0, 200, 200, 'red', ''],
    ['map_2', 201, 0, 200, 200, 'green', ''],
    ['map_3', 0, 201, 400, 100, 'blue', '']
]

# 点击地图时的回调函数
def select_map(event):
    widget = event.widget
    map_x = event.x
    map_y = event.y
    print(f"点击的地图: {widget}, 坐标: ({map_x}, {map_y})")

# 创建一个容器用于放置动态生成的地图
map_box = tk.Frame(root)
map_box.pack()

# 动态生成地图的函数
def show_map():
    for map_info in maps:
        # 这里忽略的插件，插件默认为空
        name, x, y, w, h, color, plugin = map_info
        print(name, x, y, w, h, color, plugin)
        map_frame = tk.Frame(root, width=w, height=h, bg=color)
        # 绑定点击事件到地图容器
        map_frame.bind("<Button-1>", select_map)
        map_frame.place(x=x, y=y)

# 调用函数显示地图
show_map()

# 启动主循环
root.mainloop()